const validate = {
    /**
     * 判断整数num是否等于0
     *
     * @param num
     * @return
     * @author jiqinlin
     */
    isIntEqZero: function(num) {
        return num == 0
    },

    /**
     * 判断整数num是否大于0
     *
     * @param num
     * @return
     * @author jiqinlin
     */
    isIntGtZero: function(num) {
        return num > 0
    },

    /**
     * 判断整数num是否大于或等于0
     *
     * @param num
     * @return
     * @author jiqinlin
     */
    isIntGteZero: function(num) {
        return num >= 0
    },

    /**
     * 判断浮点数num是否等于0
     *
     * @param num 浮点数
     * @return
     * @author jiqinlin
     */
    isFloatEqZero: function(num) {
        return num == 0
    },

    /**
     * 判断浮点数num是否大于0
     *
     * @param num 浮点数
     * @return
     * @author jiqinlin
     */
    isFloatGtZero: function(num) {
        return num > 0
    },

    /**
     * 判断浮点数num是否大于或等于0
     *
     * @param num 浮点数
     * @return
     * @author jiqinlin
     */
    isFloatGteZero: function(num) {
        return num >= 0
    },

    /**
     * 匹配Email地址
     */
    isEmail: function(str) {
        // if (str == null || str == "") return false
        var result = str.match(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/)
        if (result == null) return false
        return true
    },

    /**
     * 判断数值类型，包括整数和浮点数
     */
    isNumber: function(str) {
        if (isDouble(str) || isInteger(str)) return true
        return false
    },

    /**
     * 只能输入数字[0-9]
     */
    isDigits: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^\d+$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配money
     */
    isMoney: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^(([1-9]\d*)|(([0-9]{1}|[1-9]+)\.[0-9]{1,2}))$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配phone
     */
    isPhone: function(text) {
        return /^1[3-9]\d{9}$/.test(text)
    },

    /**
     * 匹配mobile
     */
    isMobile: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^((\(\d{2,3}\))|(\d{3}\-))?((13\d{9})|(15\d{9})|(18\d{9}))$/)
        if (result == null) return false
        return true
    },

    /**
     * 联系电话(手机/电话皆可)验证
     */
    isTel: function(text) {
        if (this.isMobile(text) || this.isPhone(text)) return true
        return false
    },

    /**
     * 匹配qq
     */
    isQq: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^[1-9]\d{4,12}$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配integer
     */
    isInteger: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^[-\+]?\d+$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配double或float
     */
    isDouble: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^[-\+]?\d+(\.\d+)?$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配邮政编码
     */
    isZipCode: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^[0-9]{6}$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配URL
     */
    isUrl: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\’:+!]*([^<>\"])*$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配密码，以字母开头，长度在大于5，只能包含字符、数字和下划线。
     */
    isPwd: function(str) {
        if (str == '' || str == null || str.length > 20) return false
        return true
        // if (str == null || str == "") return false
        // var result = str.match(/^[a-zA-Z]\w{4,}$/)
        // if (result == null) return false
        // return true
    },

    /**
     * 密码复杂度，长度10-20
     * @param {*} str 
     */
    isRulePwd: function(str) {
        // var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z]).{10,20}') // 必须是数字 字母
        // var pwdRegex = new RegExp('(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\\W_])^.{10,20}$') // 必须是数字、大写字母、小写字母、特殊字符
        /* var pwdRegex = new RegExp('(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])^.{10,20}$')
        return pwdRegex.test(str) */
      return true
    },

    /**
     * 确认密码，以字母开头，长度在大于5，只能包含字符、数字和下划线。
     */
    isSurePwd: function(str, sureStr) {
        return str === sureStr
    },
    /**
     * 判断是否为合法字符(a-zA-Z0-9-_)
     */
    isRightfulString: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^[A-Za-z0-9_-]+$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配english
     */
    isEnglish: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^[A-Za-z]+$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配身份证号码
     */
    isIdCardNo: function(num) {　
        return (/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(num))
    },

    /**
     * 匹配汉字
     */
    isChinese: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^[\u4e00-\u9fa5]+$/)
        if (result == null) return false
        return true
    },

    /**
     * 匹配中文(包括汉字和字符)
     */
    isChineseChar: function(str) {
        if (str == null || str == "") return false
        var result = str.match(/^[\u0391-\uFFE5]+$/)
        if (result == null) return false
        return true
    },

    /**
     * 字符验证，只能包含中文、英文、数字、下划线等字符。
     */
    stringCheck: function(str) {
        if (str == null || str == "" || str.length > 36) return false
        // var result = str.match(/^[a-zA-Z0-9\u4e00-\u9fa5-_]+$/)
        // if (result == null) return false
        return true
    },

    /**
     * 验证证件号码
     * @param {*} str 
     */
    unifiedCheck: function(str) {
        if (str == null || str == "" || str.length > 36) return false
        return true
    },

    /**
     * 过滤中英文特殊字符，除英文"-_"字符外
     */
    stringFilter: function(str) {
        var pattern = new RegExp("[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]")
        var rs = ""
        for (var i = 0; i < str.length; i++) {
            rs = rs + str.substr(i, 1).replace(pattern, '')
        }
        return rs
    },

    /**
     * 判断是否包含中英文特殊字符，除英文"-_"字符外
     */
    isContainsSpecialChar: function(str) {
        if (str == null || str == "") return false
        var reg = RegExp(/[(\ )(\`)(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\+)(\=)(\|)(\{)(\})(\')(\:)(\;)(\')(',)(\[)(\])(\.)(\<)(\>)(\/)(\?)(\~)(\！)(\@)(\#)(\￥)(\%)(\…)(\&)(\*)(\（)(\）)(\—)(\+)(\|)(\{)(\})(\【)(\】)(\‘)(\；)(\：)(\”)(\“)(\’)(\。)(\，)(\、)(\？)]+/)
        return reg.test(str)
    },

    /**
     * 判断字符串只能输入英文数字以及下划线
     */
    isNotContainsSpecialChar: function(str) {
        var reg = /^[a-zA-Z0-9_]{0,}$/
        return reg.test(str)
    },

    required: function(str) {
        return str !== null && str !== undefined && str.trim() !== ''
    }
}
export default validate
